package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.CrossInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护交叉口（路口）信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public interface DubboCrossInfoService {
	
	/**
	 * 返回所有交叉口信息
	 * @return ResultPojo 所有交叉口信息
	 */
	public ResultPojo getCrossInfo();
	
	public ResultPojo getCrossInfo(String crossId, String crossName, String orderSeq);
	
	/**
	 * 返回所有交叉口名称和编号
	 * @return ResultPojo 所有交叉口名称和编号
	 */
	public ResultPojo getCrossName(String crossId, String crossName);
	/**
	 * 分页返回所有交叉口信息
	 * @param page 分页对象
	 * @return ResultPojo 包含交叉口信息的分页对象
	 */
	public ResultPojo getPageCrossInfo(Page page);
	
	
	public ResultPojo getPageCrossInfo(Page page, String crossId, String crossName, String orderSeq);
	
	/**
	 * 返回指定编码的交叉口信息
	 * @param crossId 交叉口编码
	 * @return ResultPojo 交叉口信息
	 */
	public ResultPojo getCrossInfoById(String crossId);
	
	/**
	 * 按名称匹配并返回交叉口信息
	 * @param crossName 交叉口名称
	 * @return ResultPojo 交叉口信息
	 */
	public ResultPojo getCrossInfoByName(String crossName);
	
	/**
	 * 返回与输入前缀相匹配的最大交叉口编码值，用于手工生成新的交叉口编码
	 * @param prefixCrossId 交叉口编码前缀
	 * @return String 与前缀相匹配的最大交叉口编码值
	 */
	public String getMaxCrossId(String prefixCrossId);
	
	/**
	 * 添加一条交叉口信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param crossInfoDto 交叉口信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addCrossInfo(String token, CrossInfoDto crossInfoDto);
	
	/**
	 * 修改一条交叉口信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param crossInfoDto 交叉口信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editCrossInfo(String token, CrossInfoDto crossInfoDto);
	
	/**
	 * 删除指定编码的交叉口信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param crossId 交叉口编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeCrossInfo(String token, String crossId);
}
